package com.xyzm.stream;

import java.util.ArrayList;
import java.util.stream.Collectors;

/**
 * “Stream流”其实是一个集合元素的函数模型，它并不是集合，也不是数据结构，其本身并不存储任何 元素(或其地址值)
 * 获取流
 *      所有的 Collection 集合都可以通过 stream 默认方法获取流;
 *      Stream 接口的静态方法 of 可以获取数组对应的流。
 * stream
 *      .map(映射至新的结构)
 *      .filter（过滤）
 *      .count（总数）
 *      .skip（跳过数目）
 *      .limit（截取数目）
 *      .collect（转为集合）
 *      .concat（拼接Stream流）
 *      .forEach（遍历循环）
 */
public class Stream_Demo {
    public static void main(String[] args) {
        ArrayList<Student> students = new ArrayList<>();
        students.add(new Student("刘备",18,"男","一中"));
        students.add(new Student("关羽",20,"男","一中"));
        students.add(new Student("赵云",21,"男","二中"));
        students.add(new Student("张飞",22,"男","一中"));
        students.add(new Student("黄忠",25,"男","三中"));
        /*students.forEach(s->{
            System.out.println(s);
        });*/
        /*System.out.println("========================");
        students.forEach(System.out::println);*/
        System.out.println("========================");
       /* List<Student> collect = students.stream().skip(1).limit(2).collect(Collectors.toList());
        collect.forEach(System.out::println);*/

        /*students.stream().filter(student -> {
            return student.getAge()>20;
        }).forEach(System.out::println);*/

        String collect = students.stream().map(student -> {
            return student.getName();
        }).collect(Collectors.joining(","));
        System.out.println(collect);
    }
}
